import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';
import 'package:ycbl/view_model/login_state_view_model.dart';
import 'package:ycbl/view_model/user_view_model.dart';

/// 顶层需要提供数据的 providers
/// （4.0 开始，provider 时延迟（第一次使用时）初始化的，可以指定 lazy: false 来立即初始化）
List<SingleChildWidget> topProviders = [
  userProvider,
  loginStateProvider,
];

/// 用户模型依赖
SingleChildWidget userProvider = ChangeNotifierProvider<UserViewModel>(
  create: (_) => UserViewModel() ,
);

/// 登录状态依赖 UserViewModel，当 UserViewModel 中的 user 变化时，会更新登录状态
SingleChildWidget loginStateProvider = ChangeNotifierProxyProvider<UserViewModel, LoginStateViewModel>(
  create: (_) {
    return LoginStateViewModel();
  },
  update: (context, userModel, loginStateModel) { // 当 userModel 中的数据变化时，会回调 update 方法
    loginStateModel.update(userModel.hasUser);
    return loginStateModel;
  },
);